<%@ page import="com.qf.entity.User" %>
<%@ page import="com.qf.entity.Book" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: 常肖飞先生
  Date: 2022/5/13
  Time: 0:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--
    EL 表达式：Expression Language
        概述：是一种用于输出数据的一种简便的方式。可以让jsp页面的编写更加的简单。
            JSP2.0 引入的。

        作用：
            1：输出域对象中的数据。
                pageContext  request  session  application
            2：可以替换 域对象
                域对象.getAttribute(key)

        具体的使用：
            语法：
                ${scope.key} 获取具体的scope对象域中的某个值。
                ${key} 获取具四个域对象中key 对应的 值。逐级查找，先查找小的。
--%>
<h3>使用EL表达式获取简单的数据</h3>
<%
    //域对象中添加数据
    pageContext.setAttribute("name", "tom");
    request.setAttribute("age", 10);
    session.setAttribute("gender", "男");
    application.setAttribute("id", "java2203");
%>
<%-- 不使用EL表达式获取域对象数据--%>
<%=pageContext.findAttribute("name")%>
<br>
<%=pageContext.findAttribute("age")%>
<br>
<%=pageContext.findAttribute("gender")%>
<br>
<%=pageContext.findAttribute("id")%>
<br>

<br>
<%--使用EL表达式获取域对象中的数据--%>
${name}<br>
${age}<br>
${gender}<br>
${id}<br>


<br>
${"name"}<br>
<br>

${pageScope.name}<br>
${requestScope.age}<br>
${sessionScope.gender}<br>
${applicationScope.id}<br>

<br>
<br>
<h3>EL表达式访问对象属性</h3>
<%
//    User user = new User("tom", "boy", 16);
//    Book book = new Book("三国演义", 100, "罗贯中");
//    user.setBook(book);
//    pageContext.setAttribute("user", user);
%>
${user.username}
<br>
${user.age}
<br>
${user.gender}
<br>
${user.book.name}
<%
    List<Object> list = new ArrayList<>();
    list.add("中国");
    list.add("俄罗斯");
    list.add("巴基斯坦");
    list.add("老挝");
    pageContext.setAttribute("list", list);

    int[] arr = {1, 2, 3, 4};
    pageContext.setAttribute("arr", arr);
%>
${list[0]}
<br>
${list[1]}
<br>
${list[2]}
<br>
${list[3]}
<br>
${arr[4]}
<br>

<h2>EL表达式获取Map中的数据</h2>
<%
    //key必须是字符串类型  value 是 Object
    Map<String, String> map = new HashMap<>();
    map.put("cn", "中国");
    map.put("cn", "美国");
    map.put("cn", "英国");
    map.put("cn", "日本");

    pageContext.setAttribute("map", map);
%>

${map.cn}
<br>
<%--${map."cn"}--%>
<br>
${map["1"]}
<br>
<br>

</body>
</html>
